package br.com.salao.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import br.com.salao.bean.FuncionarioServicos;
import br.com.salao.util.JpaUtil;

public class ServicosFuncionarioDaoImpl implements ServicosFuncionarioDao {
	
	private final GenericDao<FuncionarioServicos> dao;

	public ServicosFuncionarioDaoImpl(EntityManager em){
		dao = new GenericDao<FuncionarioServicos>(em, FuncionarioServicos.class);
	}
	
	public FuncionarioServicos incluir(FuncionarioServicos funcionarioServicos){
		return dao.salvar(funcionarioServicos);
	}
	
	@SuppressWarnings("unchecked")
	public List<FuncionarioServicos> buscarServicoPorIdEstabelecimentoEIdFuncionarioEIdServico(int idEstabelecimento, int idFuncionario, int IdServico){
		
		EntityManager em =  JpaUtil.getEntityManager();

		List<FuncionarioServicos> funcionarioServicos = null;

		try {		
			Query query = em.createQuery("from FuncionarioServicos s where s.estabelecimento.id like :idEstabelecimento and s.funcionario.id like :idFuncionario and s.servico.id like :idServico");
			query.setParameter("idEstabelecimento", idEstabelecimento);
			query.setParameter("idFuncionario", idFuncionario);
			query.setParameter("idServico", IdServico);
			funcionarioServicos = (List<FuncionarioServicos>) query.getResultList();	
			
		} catch (Exception e) {
			
			e.printStackTrace();
			funcionarioServicos = null;
			
		} finally{
			if(em != null){
				em.close();
			}
		}
		return funcionarioServicos;			
	}
	
	
	@SuppressWarnings("unchecked")
	public FuncionarioServicos buscarServicosFuncionarioPorId(int id){
		
		EntityManager em =  JpaUtil.getEntityManager();

		FuncionarioServicos funcionarioServicos = null;

		try {		
			Query query = em.createQuery("from FuncionarioServicos s where s.id = :id");
			query.setParameter("id", id);

			funcionarioServicos = (FuncionarioServicos) query.getSingleResult();	
			
		} catch (Exception e) {
			
			e.printStackTrace();
			funcionarioServicos = null;
			
		} finally{
			if(em != null){
				em.close();
			}
		}
		return funcionarioServicos;			
	}
	
	
	@SuppressWarnings("unchecked")
	public List<FuncionarioServicos> buscarServicoPorIdEstabelecimentoEIdFuncionario(int idEstabelecimento, int idFuncionario){
		
		EntityManager em = JpaUtil.getEntityManager();

		List<FuncionarioServicos> funcionarioServicos = null;

		try {		
			Query query = em.createQuery("from FuncionarioServicos s where s.estabelecimento.id like :idEstabelecimento and s.funcionario.id like :idFuncionario");
			query.setParameter("idEstabelecimento", idEstabelecimento);
			query.setParameter("idFuncionario", idFuncionario);
			funcionarioServicos = (List<FuncionarioServicos>) query.getResultList();	
			
		} catch (Exception e) {
			
			e.printStackTrace();
			funcionarioServicos = null;
			
		} finally{
			if(em != null){
				em.close();
			}
		}
		return funcionarioServicos;			
	}
	
	
	@SuppressWarnings("unchecked")
	public List<FuncionarioServicos> buscarServicoFuncionarioPorIdEstabelecimento(int idEstabelecimento){
		
		EntityManager em =  JpaUtil.getEntityManager();

		List<FuncionarioServicos> funcionarioServicos = null;

		try {		
			Query query = em.createQuery("from FuncionarioServicos s where s.estabelecimento.id = :idEstabelecimento");
			query.setParameter("idEstabelecimento", idEstabelecimento);
			funcionarioServicos = (List<FuncionarioServicos>) query.getResultList();	
			
		} catch (Exception e) {
			
			e.printStackTrace();
			funcionarioServicos = null;
			
		} finally{
			if(em != null){
				em.close();
			}
		}
		return funcionarioServicos;			
	}	


}
